// yangbuyi Copyright (c) https://yby6.com 2023.

// 引入bindingx，此库类似于微信小程序wxs，目的是让js运行在视图层，减少视图层和逻辑层的通信折损
const BindingX = uni.requireNativePlugin("bindingx");

export default {
  methods: {
    // 此处不写注释，请自行体会
    nvueScrollHandler(e) {
      const anchor = this.$refs["u-scroll-list__scroll-view"].ref;
      const element = this.$refs["u-scroll-list__indicator__line__bar"].ref;
      const scrollLeft = e.contentOffset.x;
      const contentSize = e.contentSize.width;
      const { scrollWidth } = this;
      const barAllMoveWidth = this.indicatorWidth - this.indicatorBarWidth;
      // 在安卓和iOS上，需要除的倍数不一样，iOS需要除以2
      const actionNum = uni.$u.os() === "ios" ? 2 : 1;
      const expression = `(x / ${actionNum}) / ${
        contentSize - scrollWidth
      } * ${barAllMoveWidth}`;
      BindingX.bind({
        anchor,
        eventType: "scroll",
        props: [
          {
            element,
            property: "transform.translateX",
            expression,
          },
        ],
      });
    },
  },
};
